﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        // 在主类中添加一个方法，参数类型就是Shape，方法体中，用形参去调用GetArea()方法。
        //main方法中去测试这个方法。
        public static void Shape(Shape shape) {
            Circle circle = new Circle();
            circle.GetArea();
            Square square = new Square();
            square.GetArea();
        }

        static void Main(string[] args)
        {

            //Circle circle = new Circle();
            //circle.GetArea();
            //Square square = new Square();
            //square.GetArea();
            Shape shape = new Shape();
            Shape(shape);

        }
    }
    //创建一个Shape（形状）类，此类包含一个名为color的数据成员，用于存储颜色，
    //这个类还包含一个名为GetArea()的虚方法（这个方法是用来获取形状面积的）。
    //基于这个Shape，创建两个子类：Circle（圆形类）和Square（正方形类），
    //Circle类中包含radius（半径）的数据成员，Square类中包含sideLen（边长）的数据成员，
    //这两个子类都去重写父类的GetArea()方法，各自去实现计算自己的面积。
    class Shape {
        protected string color;

        public virtual void GetArea() {
            Console.WriteLine("要计算的面积");
        }

    }
    class Circle : Shape {
        protected double radius;
        public override void GetArea()
        {
            double π = 3.14;
            base.GetArea();
            Console.WriteLine("请输入要计算的圆的半径");
            string str = Console.ReadLine();
            radius=double.Parse(str);
            Console.WriteLine("圆的面积为："+(π*radius*radius));

        }


    }
    class Square : Shape {
        protected double sidieLen;
        public override void GetArea()
        {
            base.GetArea();
            Console.WriteLine("请输入要计算的正方形的边长");
            string str = Console.ReadLine();
            sidieLen = double.Parse(str);
            Console.WriteLine("正方形的面积为：" + (sidieLen * sidieLen));

        }
    }
}

